﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Control;
using Model;
using System.Data;

namespace PJRScrum
{
    public class ViewP1
    {
        IActie actie;

        public ViewP1()
        {
            actie = new ConP1();
        }

        public void VoerAlgoritmeUit(List<string> categoriën, int snelheid, int tijd, int bedrag, int factor)
        {
            //actie.VoerAlgoritmeUit(categoriën, snelheid, tijd, bedrag);
        }

        public void SlaAfbeeldingOp(System.Drawing.Image img)
        {
            actie.SlaAfbeeldingOp(img);
        }

        public DataSet LaadNaamId()
        {
            return actie.LaadNaamIdUitDatabase();
        }

        public void LaadCategorie()
        {
            actie.LaadAlleCategorieenUitDatabase();
        }

        public void VoegArtikelToe(Artikel artikel)
        {
            actie.VoegArtikelToeAanDatabase(artikel);            
        }

        public void VerwijderArtikel(int id)
        {
            actie.VerwijderArtikelUitDatabase(id);
        }

        /// <summary>
        /// Laad de beschikbare winkels die in de database opgeslagen staan.
        /// </summary>
        /// <returns>Lijst met beschikbare winkels</returns>
        public List<string> LaadAlleWinkels()
        {
            return actie.LaadAlleWinkelsUitDatabase();
        }
        
        public void MaakRek(System.Drawing.Point[] punten)
        {
            Rek rek = new Rek(punten, 0);
            VoegRekToe(rek);
        }

        public void VoegRekToe(Rek rek)
        {
            actie.VoegRekToeAanWinkel(rek);
        }

        /// <summary>
        /// Bereken de route die de gebruiker moet gaan bewandelen.
        /// </summary>
        /// <param name="winkel">Een plattegrond met de locatie van rekken en producten</param>
        /// <param name="categoriën">De categoriën die de gebruiker mee wilt laten spelen in de route</param>
        /// <param name="snelheid">De snelheid in m/s</param>
        /// <param name="tijd">De tijd in seconde</param>
        /// <param name="bedrag">Het bedrag in euro's</param>
        public void VoerAlgoritmeUit(List<string> categoriën, int snelheid, int tijd, int bedrag, double factor)
        {
            actie.VoerAlgoritmeUit(categoriën, snelheid, tijd, bedrag, factor);
        }

        public void VoegPOIToe(POI punt)
        {
            actie.VoegPOIToe(punt);
        }

        public List<Artikel> LaadArtikelen(string categorie)
        {
            return actie.LaadArtikelen(categorie);
        }

        public void VeranderAlgoritme(TypeAlgoritme type)
        {
            actie.VeranderAlgoritme(type);
        }

        public void StopAlgoritme()
        {
            actie.StopAlgoritme();
        }
    }
}
